#include <iostream>
using std::cout;
using std::endl;
//还可以编写宏定义来实现上述的max函数的功能
//优点：没有函数调用的开销，直接进行字符串的替换
//缺点：有非常严重的边界问题；稍微处理不好就容易引发问题
//问题还是比较难以排查的
#define MAX(a, b) ((a) > (b) ? (a) : (b))

//这个函数有好处：可读性强、提升可维护性
//也有坏处：调用开销要大于程序的运行开销
inline
int max(int a, int b){
    return a > b ? a : b;
}


void test(){
    int result = MAX(20,10) + 20;//result的值是多少？
    
    int result2 = MAX(10,20) + 20;//result2的值是多少？
    cout << result << ":" << result2 << endl;
}

void test2(){
    //编写了inline之后，如果编译器采纳，那么会将
    //max(20,10)----> 20 > 10 ? 20 :10
    int result = max(20, 10) + 20;
    int result2 = max(10, 20) + 20;
    cout << result << ":" << result2 << endl;
}

void test3(){
    int i = 4,j = 3;
    int result = MAX(i++,j);
    cout << result << endl; //result = 5；
    cout << i << endl; //i = 6;
}
void test4(){
    int i = 4,j = 3;
    int result = max(i++,j);
    cout << result << endl; //result = 5；
    cout << i << endl; //i = 6;
}

int main()
{
    test4();
    return 0;
}

